package com.ztesoft.web.common.db.dao.mapper;

import java.util.List;

import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.session.RowBounds;

import com.ztesoft.web.common.db.arg.SysModuleArg;
import com.ztesoft.web.common.db.po.SysModuleNodePO;
import com.ztesoft.web.common.db.po.SysModulePO;

public interface ISysModuleMapper {

	List<Integer> countByArg(SysModuleArg arg);

	List<SysModulePO> selectByArg(SysModuleArg arg);

	List<SysModuleNodePO> queryAllForTree();

	SysModulePO selectByPrimaryKey(Integer id);

	List<SysModulePO> selectByArgAndPage(SysModuleArg arg, RowBounds rowBound);
	//系统模块维护查询
	List<SysModulePO> selectByArgAndPageSys(SysModuleArg arg, RowBounds rowBound);

	int insert(SysModulePO record);
	//系统模块维护 添加
	int insertSelective(SysModulePO record);

	int insertBatch(@Param("list") List<SysModulePO> records);

	int updateByArgSelective(@Param("record") SysModulePO record, @Param("arg") SysModuleArg arg);
	 //系统模块维护 修改子集level
	int updateByArg(@Param("record") SysModulePO record, @Param("arg") SysModuleArg arg);
	//系统模块维护 修改
	int updateByPrimaryKeySelective(SysModulePO record);

	int updateByPrimaryKey(SysModulePO record);
	//系统模块维护 删除
	int deleteByArg(SysModuleArg arg);
	//系统模块维护
	int deleteByPrimaryKey(Integer id);
	//系统模块维护 是否有相同的模块名
	List<SysModulePO> selectByModuleName(Integer parentModuleId);
	//系统模块维护 返回上级模块级别
	SysModulePO selectByParentModuleId(Integer parentModuleId);
	//系统模块维护 需要修改或删除子节点的查询
	List<SysModulePO> selectByParentModuleIdTree(SysModuleArg arg);
	//系统模块维护 返回当前模块级别
	SysModulePO selectById(Integer moduleId);

}